package config

import (
	"5title_gin/cmd/cli"
	"5title_gin/global"
	"5title_gin/internal/config"
	"go.uber.org/zap"
	"gopkg.in/yaml.v3"
	"os"
)

func ReadConfig() (cfg *config.Config) {
	cfg = new(config.Config)

	// 直接使用 cli.Options.File 作为配置文件路径
	configPath := cli.Options.File

	// 调试：打印路径和环境
	//zap.S().Infof("当前环境：%s", cli.Options.Env)
	//zap.S().Infof("尝试读取配置文件：%s", configPath)

	// 读取文件
	byteData, err := os.ReadFile(configPath)
	if err != nil {
		zap.S().Errorf("配置文件读取错误: %s", err)
		return nil
	}

	err = yaml.Unmarshal(byteData, cfg)
	if err != nil {
		zap.S().Errorf("配置文件格式错误: %s", err)
		return nil
	}

	zap.S().Info("📂 配置文件读取成功!")
	return cfg
}

func DumpConfig() {
	byteData, err := yaml.Marshal(global.Config)
	if err != nil {
		zap.S().Errorf("配置文件转换错误: %s", err)
		return
	}
	err = os.WriteFile(cli.Options.File, byteData, 0666)
	if err != nil {
		zap.S().Errorf("配置文件写入错误: %s", err)
		return
	}
	zap.S().Info("配置文件写入成功", zap.String("file", cli.Options.File))
}
